home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_asm / oopasm / dialog.asm < prev    next >
Encoding:
Assembly Source File  |  1998-01-01  |  2.1 KB  |  103 lines

  1.     .MODEL    SMALL
  2.  
  3.     INCLUDE    equates.inc
  4.     INCLUDE    instance.inc
  5.     INCLUDE    messages.inc
  6.     INCLUDE    objects.inc
  7.  
  8. IF1
  9.     INCLUDE    macros.mac
  10.     INCLUDE    objects.mac
  11.     INCLUDE    video.mac
  12. ENDIF
  13.  
  14.     EXTRN    hideMouseCursor:NEAR
  15.     EXTRN    prtString:NEAR
  16.     EXTRN    sendMsg:NEAR
  17.  
  18.     EXTRN    DlgMenu:WORD
  19.     EXTRN    Mouse:WORD
  20.     EXTRN    PopUp:WORD
  21.     EXTRN    Self:WORD
  22.     EXTRN    SBorder:WORD
  23.     EXTRN    Shadow:WORD
  24.  
  25.     .CODE
  26.  
  27. IF Dbug
  28.     PUBLIC    disDlgText
  29. ENDIF
  30. COMMENT    %
  31. ==============================================================================
  32. Displays a dialog's text message.
  33.  
  34. =============================================================================%
  35. disDlgText    PROC    NEAR
  36.     getInst        dh,Row1,Self        ;Get upper row 
  37.     getInst        dl,Col1            ;Get left column
  38.     getInst        bl,Color        ;Get color 
  39.     getInst        si,TxtPtr        ;Get text ptr
  40.  
  41.     add        dh,RowOffset        ;Add in row offset
  42.     add        dl,ColOffset        ;Add in column offset
  43.     add        dl,ColOffset        ;Add in column offset
  44.  
  45.     call        prtString        ;Display the string
  46.     ret
  47. disDlgText    ENDP
  48.  
  49.  
  50.  
  51. IF Dbug
  52.     PUBLIC    clickOnItem
  53. ENDIF
  54. COMMENT    %
  55. ==============================================================================
  56. Selects the menu item based on mouse location.
  57.  
  58. =============================================================================%
  59. clickOnItem    PROC    NEAR
  60.     getInst        bl,Col1,Mouse        ;Get mouse column
  61.     getInst        si,MenuPtr,Self        ;Get menu ptr
  62.     xor        ax,ax            ;Initialize item counter
  63.  
  64. coi1:    mov        dl,Bptr[si]        ;Get col for current item
  65.     mov        dh,Bptr[si+MenuEntrySize]    ;Get col for next item
  66.     lessThan    bl,dl,coi4        ;Exit if before item
  67.     lessThan    bl,dh,coi3        ;Done if before next item
  68.     inc        ax            ;Increment item count
  69.     add        si,MenuEntrySize    ;Point to next entry
  70.     identity    Wptr[si],coi1,coi4    ;Loop if more items
  71.                         ;Else exit
  72.  
  73. coi3:    push        Self
  74.     mov        cl,MenuEntrySize    ;Get entry size
  75.     mul        cl            ;Calc entry offset
  76.     send        DlgMenu,Flash,ax    ;Hilite menu item
  77.     pop        Self
  78.  
  79.     send        Self,Select        ;Select menu item
  80. coi4:    ret
  81. clickOnItem    ENDP
  82.  
  83.  
  84.  
  85.     .DATA
  86.  
  87. defMsg    Dialog,\
  88.     Refresh,\
  89.     <hideMouseCursor,,disDlgText>
  90.  
  91. defMsg    Dialog,\
  92.     Click,\
  93.     <,,clickOnItem>
  94.  
  95. defObj    Dialog,\
  96.     <Shadow,PopUp,SBorder>,\
  97.     <>,\
  98.     <Refresh,Clear,Click>
  99.  
  100.  
  101.  
  102.     END
  103.